package com.goldgov.distancelearning.dao;

import java.util.List;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import com.goldgov.conference.service.ConferenceStat;
import com.goldgov.conference.service.ConferenceStatQuery;
import com.goldgov.distancelearning.service.Distancelearning;
import com.goldgov.distancelearning.service.DistancelearningBean;
import com.goldgov.distancelearning.service.DistancelearningCountBean;
import com.goldgov.distancelearning.service.DistancelearningQuery;
import com.goldgov.distancelearning.service.DistancelearningUser;

@Mapper
public interface DistancelearningDao {
	
	/**
	 * 预新增
	 * @date 2018年6月21日 下午4:02:06 
	 * @author hanxiangyu
	 * @return
	 */
	Distancelearning preAdd();
	/**
	 * 新增远程教育记录
	 * @param distancelearning
	 * @return
	 */
	int addDistancelearning(Distancelearning distancelearning);
	
	/**
	 * 获取远程教育记录
	 * @param query
	 * @return
	 */
	List<Distancelearning> getDistancelearningList(@Param("query") DistancelearningQuery query);
	/**
	 * 根据支部id获取远程教育记录
	 * @param query
	 * @return
	 */
	List<Distancelearning> getDisListByOrgId(@Param("query") DistancelearningQuery query);
	/**
	 * 获取远程教育记录
	 * @param query
	 * @return
	 */
	List<Distancelearning> getDisListMobile(@Param("query") DistancelearningQuery query);
	/**
	 * 获取远程教育记录
	 * @param query
	 * @return
	 */
	List<Distancelearning> getDisStatList(@Param("query") DistancelearningQuery query);
	/**
	 * 获取会议详情
	 * @date 2018年6月21日 下午7:10:20 
	 * @author hanxiangyu
	 * @param distancelearning
	 * @return
	 */
	Distancelearning getDistaanceByID(Distancelearning distancelearning);
	/**
	 * 更新远程教育会议情况
	 * @date 2018年6月22日 上午10:13:10 
	 * @author hanxiangyu
	 * @param distancelearning
	 * @return
	 */
	int updateDistancelearning(Distancelearning distancelearning);
	/**
	 * 发布撤销操作
	 * @date 2018年6月22日 上午11:21:22 
	 * @author hanxiangyu
	 * @param distancelearning
	 * @return
	 */
	int publishDistancelearning(Distancelearning distancelearning);
	
	/**
	 * 同级党支部统计
	 * @date 2018年6月29日 下午5:07:20 
	 * @author hanxiangyu
	 * @param query
	 * @return
	 */
	List<Distancelearning> getDisVisStatList(@Param("query") DistancelearningQuery query);
	
	
	/**
	 * 获取远程教育记录
	 * @param query
	 * @return
	 */
	List<Distancelearning> getDistancelearningByAdminList(@Param("query") DistancelearningQuery query);
	/**
	 * 获取远程教育直播记录
	 * @param query
	 * @return
	 */
	List<Distancelearning> getDisLiveByAdminList(@Param("query") DistancelearningQuery query);
	/**
	 * 更新录像id
	 * @date 2018年7月4日 下午6:18:44 
	 * @author hanxiangyu
	 * @param distancelearning
	 * @return
	 */
	int updateDisById(Distancelearning distancelearning);
	/**
	 * 根据多个id获取多个记录
	 * @date 2018年7月4日 下午8:02:46 
	 * @author hanxiangyu
	 * @param ids
	 * @return
	 */
	List<Distancelearning> getDisListByIds(@Param("ids") String[] ids);
	
	/**
	 * 获取录播列表
	 * @param query
	 * @return
	 */
	List<Distancelearning> getLBListByAdmin(@Param("query") DistancelearningQuery query);
	/**
	 * 前台获取获取录播列表
	 * @param query
	 * @return
	 */
	List<Distancelearning> getLBList(@Param("query") DistancelearningQuery query);
	/**
	 * 更新直播信息
	 * @date 2018年7月6日 下午6:45:57 
	 * @author hanxiangyu
	 * @param distancelearning
	 * @return
	 */
	int updateLiveStatus(Distancelearning distancelearning);
	/**
	 * 获取用户状态
	 * @date 2018年7月9日 上午10:49:06 
	 * @author hanxiangyu
	 * @param distancelearning
	 * @return
	 */
	Distancelearning getUserStates(DistancelearningUser distancelearningUser);
	/**
	 * 获取直播间id
	 * @date 2018年7月9日 下午3:08:11 
	 * @author hanxiangyu
	 * @return
	 */
	Integer getMaxLiveId();
	/**
	 * 获取失效的直播间id
	 * @date 2018年7月9日 下午3:08:41 
	 * @author hanxiangyu
	 * @return
	 */
	List<Integer> getFailureLiveList();
	/**
	 * 获取未失效的直播间id
	 * @date 2018年7月9日 下午3:08:41 
	 * @author hanxiangyu
	 * @return
	 */
	List<Integer> getValidLiveList();
	/**
	 * 根据直播间id查询会议记录
	 * @date 2018年7月19日 下午6:27:09 
	 * @author hanxiangyu
	 * @param liveId
	 * @return
	 */
	Distancelearning getDisByLiveId(@Param("liveId")Integer liveId);
	
	/**
	 * 随机获取记录数
	 * @param query
	 * @return
	 */
	List<Distancelearning> getRandomDis(DistancelearningBean disBean);
	/**
	 * 随机获取记录数
	 * @param query
	 * @return
	 */
	List<Distancelearning> getLBRandomDis(DistancelearningBean disBean);
	/**
	 * 获取录播数量
	 * @date 2018年8月1日 下午11:11:45 
	 * @author hanxiangyu
	 * @param disBean
	 * @return
	 */
	int getLBCountRandomDis(DistancelearningBean disBean);
	/**
	 * 获取直播数量
	 * @date 2018年8月1日 下午11:11:45 
	 * @author hanxiangyu
	 * @param disBean
	 * @return
	 */
	int getCountRandomDis(DistancelearningBean disBean);
	
	
	/**
	 * 手动开启结束会议
	 * @date 2018年7月24日 下午9:10:43 
	 * @author hanxiangyu
	 * @param disBean
	 * @return
	 */
	int startAndEndDis(DistancelearningBean disBean);
	/**
	 * 根据code获取组织结构id
	 * @param scopeCode
	 * @return
	 */
	String getOrgIdByCode(@Param("scopeCode")String scopeCode);
	
	/**
	 * 统计会议次数和时长
	 * @date 2018年8月21日10:32:56
	 * @author lsg
	 */
	List<DistancelearningCountBean> countTimesAndLength(DistancelearningQuery query);
	
	/**
	 * 查询机构下会议列表
	 * @date 2018年8月23日10:32:56
	 * @author lsg
	 */
	List<Distancelearning> findDistancelearningListByOrgId(DistancelearningQuery query);
	
	/**
	 * 按时间统计会议次数
	 * @date 2018年8月24日17:22:41
	 * @author lsg
	 */
	List<DistancelearningCountBean> countTimesByTime(DistancelearningQuery query);
	
	/**
	 * 查询机构下最下级机构数量
	 * @date 2018年8月24日17:22:46
	 * @author lsg
	 */
	int countOrgNumByOrgId(String orgId);
	
	/**
	 * 会议完成度（最终版）
	 * @param query
	 * @return
	 */
	List<Distancelearning> countDistancelearningPercentageAvg(@Param("query") DistancelearningQuery query);
	
	/**
	 * 会议材料数量分布
	 * @param query
	 * @return
	 */
	Distancelearning countDistancelearningAttachPercentage(@Param("query")DistancelearningQuery query);
}
